// 蜂窝蜜造平台生成代码，如手工更改，请添加到 .beeignore 忽略生成

package com.fowo.api.model.inventory.list;

import com.fowo.api.common.annotaion.DataObjectType;
import com.fowo.api.common.meta.MetaDataObject;
import com.fowo.api.common.meta.MetaDataObjects;
import com.fowo.api.common.model.PageSearch;
import com.fowo.api.common.mybatis.helper.PageSearchHelper;
import com.fowo.api.common.util.ListUtils;
import com.fowo.api.entity.InventoryList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

@DataObjectType(InventoryList.class)
@Setter
@Getter
public class InventoryListSearchParamPo extends PageSearch {

  private static MetaDataObject metaDataObject;

  @Override
  public void applySqlSegments() {
    if (metaDataObject == null) {
      metaDataObject =
        ListUtils.find(
          MetaDataObjects.getObjects(),
          o -> "InventoryList".equals(o.getName())
        );
    }
    PageSearchHelper.fillSqlSegments(this, metaDataObject);
  }

  @Override
  public void initFinal() {
    super.initFinal();
    applySqlSegments();
  }

  /**
   * 获取关联字段的查询表别名信息
   */
  @Override
  public Map<String, String> getJoinFieldTableAliasMap() {
    Map<String, String> map = new HashMap<>();
    map.put("warehouseStock", "w");
    map.put("countPeople", "su");
    return map;
  }

  @Override
  public Map<String, OptionalJoinField> getOptionalJoinFields() {
    Map<String, OptionalJoinField> map = new HashMap<>();
    map.put(
      "generateInventoryDetails.tradeName",
      new OptionalJoinField()
        .setJoinPart(
          "LEFT JOIN inventory_list_subtable AS RO_1 ON RO_1.del_flag = 0 AND RO_1.parent_inventory_list = t.id"
        )
        .setTableAlias("RO_1")
        .setColumnName("trade_name")
        .setNeedGroupBy(true)
    );
    map.put(
      "generateInventoryDetails.sku",
      new OptionalJoinField()
        .setJoinPart(
          "LEFT JOIN inventory_list_subtable AS RO_2 ON RO_2.del_flag = 0 AND RO_2.parent_inventory_list = t.id"
        )
        .setTableAlias("RO_2")
        .setColumnName("sku")
        .setNeedGroupBy(true)
    );
    map.put(
      "generateInventoryDetails.fnsku",
      new OptionalJoinField()
        .setJoinPart(
          "LEFT JOIN inventory_list_subtable AS RO_3 ON RO_3.del_flag = 0 AND RO_3.parent_inventory_list = t.id"
        )
        .setTableAlias("RO_3")
        .setColumnName("fnsku")
        .setNeedGroupBy(true)
    );
    map.put(
      "generateInventoryDetails.intensityTime",
      new OptionalJoinField()
        .setJoinPart(
          "LEFT JOIN inventory_list_subtable AS RO_4 ON RO_4.del_flag = 0 AND RO_4.parent_inventory_list = t.id"
        )
        .setTableAlias("RO_4")
        .setColumnName("intensity_time")
        .setNeedGroupBy(true)
    );

    return map;
  }

  private Long generateInventoryDetails_tradeName;
  private List<String> generateInventoryDetails_tradeNameInList;
  private String generateInventoryDetails_sku;
  private List<String> generateInventoryDetails_skuInList;
  private String generateInventoryDetails_fnsku;
  private List<String> generateInventoryDetails_fnskuInList;

  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private java.util.Date generateInventoryDetails_intensityTime;

  /**
   * 最早盘点时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private String generateInventoryDetails_intensityTimeStart;

  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private String generateInventoryDetails_intensityTimeEnd;

  /**
   * 指定使用特定的视图过滤条件
   * <p>
   * 有效值包括：
   * </p>
   */
  private String byViewName;

  /**
   * 编号
   */
  private Long id;

  /**
   * 最小编号
   */
  private Long idMin;

  /**
   * 最大编号
   */
  private Long idMax;

  /**
   * 编号 比较(eq)
   */
  private Long idEq;
  /**
   * 编号 比较(neq)
   */
  private Long idNeq;
  /**
   * 编号 比较(gt)
   */
  private Long idGt;
  /**
   * 编号 比较(gte)
   */
  private Long idGte;
  /**
   * 编号 比较(lt)
   */
  private Long idLt;
  /**
   * 编号 比较(lte)
   */
  private Long idLte;
  /**
   * 编号 比较(contains)
   */
  private Long idContains;
  /**
   * 编号 比较(notcontains)
   */
  private Long idNotcontains;
  /**
   * 编号 比较(startswith)
   */
  private Long idStartswith;
  /**
   * 编号 比较(endswith)
   */
  private Long idEndswith;
  /**
   * 编号 比较(isnull)
   */
  private Boolean idIsnull;
  /**
   * 编号 比较(isnotnull)
   */
  private Boolean idIsnotnull;

  /**
   * 创建人
   */
  private Long createUser;

  /**
   * 最小创建人
   */
  private Long createUserMin;

  /**
   * 最大创建人
   */
  private Long createUserMax;

  /**
   * 创建人 比较(eq)
   */
  private Long createUserEq;
  /**
   * 创建人 比较(neq)
   */
  private Long createUserNeq;
  /**
   * 创建人 比较(gt)
   */
  private Long createUserGt;
  /**
   * 创建人 比较(gte)
   */
  private Long createUserGte;
  /**
   * 创建人 比较(lt)
   */
  private Long createUserLt;
  /**
   * 创建人 比较(lte)
   */
  private Long createUserLte;
  /**
   * 创建人 比较(contains)
   */
  private Long createUserContains;
  /**
   * 创建人 比较(notcontains)
   */
  private Long createUserNotcontains;
  /**
   * 创建人 比较(startswith)
   */
  private Long createUserStartswith;
  /**
   * 创建人 比较(endswith)
   */
  private Long createUserEndswith;
  /**
   * 创建人 比较(isnull)
   */
  private Boolean createUserIsnull;
  /**
   * 创建人 比较(isnotnull)
   */
  private Boolean createUserIsnotnull;

  /**
   * 最早更新时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date lastUpdateTimeStart;

  /**
   * 最晚更新时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date lastUpdateTimeEnd;

  /**
   * 更新时间 比较(eq)
   */
  private Date lastUpdateTimeEq;
  /**
   * 更新时间 比较(neq)
   */
  private Date lastUpdateTimeNeq;
  /**
   * 更新时间 比较(gt)
   */
  private Date lastUpdateTimeGt;
  /**
   * 更新时间 比较(gte)
   */
  private Date lastUpdateTimeGte;
  /**
   * 更新时间 比较(lt)
   */
  private Date lastUpdateTimeLt;
  /**
   * 更新时间 比较(lte)
   */
  private Date lastUpdateTimeLte;
  /**
   * 更新时间 比较(contains)
   */
  private Date lastUpdateTimeContains;
  /**
   * 更新时间 比较(notcontains)
   */
  private Date lastUpdateTimeNotcontains;
  /**
   * 更新时间 比较(startswith)
   */
  private Date lastUpdateTimeStartswith;
  /**
   * 更新时间 比较(endswith)
   */
  private Date lastUpdateTimeEndswith;
  /**
   * 更新时间 比较(isnull)
   */
  private Boolean lastUpdateTimeIsnull;
  /**
   * 更新时间 比较(isnotnull)
   */
  private Boolean lastUpdateTimeIsnotnull;

  /**
   * 更新人
   */
  private Long lastUpdateUser;

  /**
   * 最小更新人
   */
  private Long lastUpdateUserMin;

  /**
   * 最大更新人
   */
  private Long lastUpdateUserMax;

  /**
   * 更新人 比较(eq)
   */
  private Long lastUpdateUserEq;
  /**
   * 更新人 比较(neq)
   */
  private Long lastUpdateUserNeq;
  /**
   * 更新人 比较(gt)
   */
  private Long lastUpdateUserGt;
  /**
   * 更新人 比较(gte)
   */
  private Long lastUpdateUserGte;
  /**
   * 更新人 比较(lt)
   */
  private Long lastUpdateUserLt;
  /**
   * 更新人 比较(lte)
   */
  private Long lastUpdateUserLte;
  /**
   * 更新人 比较(contains)
   */
  private Long lastUpdateUserContains;
  /**
   * 更新人 比较(notcontains)
   */
  private Long lastUpdateUserNotcontains;
  /**
   * 更新人 比较(startswith)
   */
  private Long lastUpdateUserStartswith;
  /**
   * 更新人 比较(endswith)
   */
  private Long lastUpdateUserEndswith;
  /**
   * 更新人 比较(isnull)
   */
  private Boolean lastUpdateUserIsnull;
  /**
   * 更新人 比较(isnotnull)
   */
  private Boolean lastUpdateUserIsnotnull;

  /**
   * 盘点单号(模糊搜索)
   */
  private String inventoryNumber;

  /**
   * 盘点单号 比较(eq)
   */
  private String inventoryNumberEq;
  /**
   * 盘点单号 比较(neq)
   */
  private String inventoryNumberNeq;
  /**
   * 盘点单号 比较(gt)
   */
  private String inventoryNumberGt;
  /**
   * 盘点单号 比较(gte)
   */
  private String inventoryNumberGte;
  /**
   * 盘点单号 比较(lt)
   */
  private String inventoryNumberLt;
  /**
   * 盘点单号 比较(lte)
   */
  private String inventoryNumberLte;
  /**
   * 盘点单号 比较(contains)
   */
  private String inventoryNumberContains;
  /**
   * 盘点单号 比较(notcontains)
   */
  private String inventoryNumberNotcontains;
  /**
   * 盘点单号 比较(startswith)
   */
  private String inventoryNumberStartswith;
  /**
   * 盘点单号 比较(endswith)
   */
  private String inventoryNumberEndswith;
  /**
   * 盘点单号 比较(isnull)
   */
  private Boolean inventoryNumberIsnull;
  /**
   * 盘点单号 比较(isnotnull)
   */
  private Boolean inventoryNumberIsnotnull;

  /**
   * 盘点单号(精确搜索)
   */
  private List<String> inventoryNumberInList;

  /**
   * 盘点仓库
   */
  private Long warehouseStock;

  /**
   * 盘点仓库 比较(eq)
   */
  private Long warehouseStockEq;
  /**
   * 盘点仓库 比较(neq)
   */
  private Long warehouseStockNeq;
  /**
   * 盘点仓库 比较(gt)
   */
  private Long warehouseStockGt;
  /**
   * 盘点仓库 比较(gte)
   */
  private Long warehouseStockGte;
  /**
   * 盘点仓库 比较(lt)
   */
  private Long warehouseStockLt;
  /**
   * 盘点仓库 比较(lte)
   */
  private Long warehouseStockLte;
  /**
   * 盘点仓库 比较(contains)
   */
  private Long warehouseStockContains;
  /**
   * 盘点仓库 比较(notcontains)
   */
  private Long warehouseStockNotcontains;
  /**
   * 盘点仓库 比较(startswith)
   */
  private Long warehouseStockStartswith;
  /**
   * 盘点仓库 比较(endswith)
   */
  private Long warehouseStockEndswith;
  /**
   * 盘点仓库 比较(isnull)
   */
  private Boolean warehouseStockIsnull;
  /**
   * 盘点仓库 比较(isnotnull)
   */
  private Boolean warehouseStockIsnotnull;
  /**
   * 盘点仓库的仓库名称 比较(eq)
   */
  private String warehouseStockNameEq;
  /**
   * 盘点仓库的仓库名称 比较(neq)
   */
  private String warehouseStockNameNeq;
  /**
   * 盘点仓库的仓库名称 比较(gt)
   */
  private String warehouseStockNameGt;
  /**
   * 盘点仓库的仓库名称 比较(gte)
   */
  private String warehouseStockNameGte;
  /**
   * 盘点仓库的仓库名称 比较(lt)
   */
  private String warehouseStockNameLt;
  /**
   * 盘点仓库的仓库名称 比较(lte)
   */
  private String warehouseStockNameLte;
  /**
   * 盘点仓库的仓库名称 比较(contains)
   */
  private String warehouseStockNameContains;
  /**
   * 盘点仓库的仓库名称 比较(notcontains)
   */
  private String warehouseStockNameNotcontains;
  /**
   * 盘点仓库的仓库名称 比较(startswith)
   */
  private String warehouseStockNameStartswith;
  /**
   * 盘点仓库的仓库名称 比较(endswith)
   */
  private String warehouseStockNameEndswith;
  /**
   * 盘点仓库的仓库名称 比较(isnull)
   */
  private Boolean warehouseStockNameIsnull;
  /**
   * 盘点仓库的仓库名称 比较(isnotnull)
   */
  private Boolean warehouseStockNameIsnotnull;

  /**
   * 盘点仓库(范围搜索)
   */
  private List<Long> warehouseStockInList;

  /**
   * 盘点类型
   */
  private String inventoryType;

  /**
   * 盘点类型 比较(eq)
   */
  private String inventoryTypeEq;
  /**
   * 盘点类型 比较(neq)
   */
  private String inventoryTypeNeq;
  /**
   * 盘点类型 比较(gt)
   */
  private String inventoryTypeGt;
  /**
   * 盘点类型 比较(gte)
   */
  private String inventoryTypeGte;
  /**
   * 盘点类型 比较(lt)
   */
  private String inventoryTypeLt;
  /**
   * 盘点类型 比较(lte)
   */
  private String inventoryTypeLte;
  /**
   * 盘点类型 比较(contains)
   */
  private String inventoryTypeContains;
  /**
   * 盘点类型 比较(notcontains)
   */
  private String inventoryTypeNotcontains;
  /**
   * 盘点类型 比较(startswith)
   */
  private String inventoryTypeStartswith;
  /**
   * 盘点类型 比较(endswith)
   */
  private String inventoryTypeEndswith;
  /**
   * 盘点类型 比较(isnull)
   */
  private Boolean inventoryTypeIsnull;
  /**
   * 盘点类型 比较(isnotnull)
   */
  private Boolean inventoryTypeIsnotnull;

  /**
   * 盘点类型(精确搜索)
   */
  private List<String> inventoryTypeInList;

  /**
   * 最早创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date createTimeStart;

  /**
   * 最晚创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date createTimeEnd;

  /**
   * 创建时间 比较(eq)
   */
  private Date createTimeEq;
  /**
   * 创建时间 比较(neq)
   */
  private Date createTimeNeq;
  /**
   * 创建时间 比较(gt)
   */
  private Date createTimeGt;
  /**
   * 创建时间 比较(gte)
   */
  private Date createTimeGte;
  /**
   * 创建时间 比较(lt)
   */
  private Date createTimeLt;
  /**
   * 创建时间 比较(lte)
   */
  private Date createTimeLte;
  /**
   * 创建时间 比较(contains)
   */
  private Date createTimeContains;
  /**
   * 创建时间 比较(notcontains)
   */
  private Date createTimeNotcontains;
  /**
   * 创建时间 比较(startswith)
   */
  private Date createTimeStartswith;
  /**
   * 创建时间 比较(endswith)
   */
  private Date createTimeEndswith;
  /**
   * 创建时间 比较(isnull)
   */
  private Boolean createTimeIsnull;
  /**
   * 创建时间 比较(isnotnull)
   */
  private Boolean createTimeIsnotnull;

  /**
   * 备注(模糊搜索)
   */
  private String remark;

  /**
   * 备注 比较(eq)
   */
  private String remarkEq;
  /**
   * 备注 比较(neq)
   */
  private String remarkNeq;
  /**
   * 备注 比较(gt)
   */
  private String remarkGt;
  /**
   * 备注 比较(gte)
   */
  private String remarkGte;
  /**
   * 备注 比较(lt)
   */
  private String remarkLt;
  /**
   * 备注 比较(lte)
   */
  private String remarkLte;
  /**
   * 备注 比较(contains)
   */
  private String remarkContains;
  /**
   * 备注 比较(notcontains)
   */
  private String remarkNotcontains;
  /**
   * 备注 比较(startswith)
   */
  private String remarkStartswith;
  /**
   * 备注 比较(endswith)
   */
  private String remarkEndswith;
  /**
   * 备注 比较(isnull)
   */
  private Boolean remarkIsnull;
  /**
   * 备注 比较(isnotnull)
   */
  private Boolean remarkIsnotnull;

  /**
   * 备注(精确搜索)
   */
  private List<String> remarkInList;

  /**
   * 盘点状态
   */
  private String status;

  /**
   * 盘点状态 比较(eq)
   */
  private String statusEq;
  /**
   * 盘点状态 比较(neq)
   */
  private String statusNeq;
  /**
   * 盘点状态 比较(gt)
   */
  private String statusGt;
  /**
   * 盘点状态 比较(gte)
   */
  private String statusGte;
  /**
   * 盘点状态 比较(lt)
   */
  private String statusLt;
  /**
   * 盘点状态 比较(lte)
   */
  private String statusLte;
  /**
   * 盘点状态 比较(contains)
   */
  private String statusContains;
  /**
   * 盘点状态 比较(notcontains)
   */
  private String statusNotcontains;
  /**
   * 盘点状态 比较(startswith)
   */
  private String statusStartswith;
  /**
   * 盘点状态 比较(endswith)
   */
  private String statusEndswith;
  /**
   * 盘点状态 比较(isnull)
   */
  private Boolean statusIsnull;
  /**
   * 盘点状态 比较(isnotnull)
   */
  private Boolean statusIsnotnull;

  /**
   * 盘点状态(精确搜索)
   */
  private List<String> statusInList;

  /**
   * 盘点人
   */
  private Long countPeople;

  /**
   * 盘点人 比较(eq)
   */
  private Long countPeopleEq;
  /**
   * 盘点人 比较(neq)
   */
  private Long countPeopleNeq;
  /**
   * 盘点人 比较(gt)
   */
  private Long countPeopleGt;
  /**
   * 盘点人 比较(gte)
   */
  private Long countPeopleGte;
  /**
   * 盘点人 比较(lt)
   */
  private Long countPeopleLt;
  /**
   * 盘点人 比较(lte)
   */
  private Long countPeopleLte;
  /**
   * 盘点人 比较(contains)
   */
  private Long countPeopleContains;
  /**
   * 盘点人 比较(notcontains)
   */
  private Long countPeopleNotcontains;
  /**
   * 盘点人 比较(startswith)
   */
  private Long countPeopleStartswith;
  /**
   * 盘点人 比较(endswith)
   */
  private Long countPeopleEndswith;
  /**
   * 盘点人 比较(isnull)
   */
  private Boolean countPeopleIsnull;
  /**
   * 盘点人 比较(isnotnull)
   */
  private Boolean countPeopleIsnotnull;
  /**
   * 盘点人的显示用户名 比较(eq)
   */
  private String countPeopleNameEq;
  /**
   * 盘点人的显示用户名 比较(neq)
   */
  private String countPeopleNameNeq;
  /**
   * 盘点人的显示用户名 比较(gt)
   */
  private String countPeopleNameGt;
  /**
   * 盘点人的显示用户名 比较(gte)
   */
  private String countPeopleNameGte;
  /**
   * 盘点人的显示用户名 比较(lt)
   */
  private String countPeopleNameLt;
  /**
   * 盘点人的显示用户名 比较(lte)
   */
  private String countPeopleNameLte;
  /**
   * 盘点人的显示用户名 比较(contains)
   */
  private String countPeopleNameContains;
  /**
   * 盘点人的显示用户名 比较(notcontains)
   */
  private String countPeopleNameNotcontains;
  /**
   * 盘点人的显示用户名 比较(startswith)
   */
  private String countPeopleNameStartswith;
  /**
   * 盘点人的显示用户名 比较(endswith)
   */
  private String countPeopleNameEndswith;
  /**
   * 盘点人的显示用户名 比较(isnull)
   */
  private Boolean countPeopleNameIsnull;
  /**
   * 盘点人的显示用户名 比较(isnotnull)
   */
  private Boolean countPeopleNameIsnotnull;

  /**
   * 盘点人(范围搜索)
   */
  private List<Long> countPeopleInList;

  /**
   * 明盘盲盘
   */
  private String blindPlate;

  /**
   * 明盘盲盘 比较(eq)
   */
  private String blindPlateEq;
  /**
   * 明盘盲盘 比较(neq)
   */
  private String blindPlateNeq;
  /**
   * 明盘盲盘 比较(gt)
   */
  private String blindPlateGt;
  /**
   * 明盘盲盘 比较(gte)
   */
  private String blindPlateGte;
  /**
   * 明盘盲盘 比较(lt)
   */
  private String blindPlateLt;
  /**
   * 明盘盲盘 比较(lte)
   */
  private String blindPlateLte;
  /**
   * 明盘盲盘 比较(contains)
   */
  private String blindPlateContains;
  /**
   * 明盘盲盘 比较(notcontains)
   */
  private String blindPlateNotcontains;
  /**
   * 明盘盲盘 比较(startswith)
   */
  private String blindPlateStartswith;
  /**
   * 明盘盲盘 比较(endswith)
   */
  private String blindPlateEndswith;
  /**
   * 明盘盲盘 比较(isnull)
   */
  private Boolean blindPlateIsnull;
  /**
   * 明盘盲盘 比较(isnotnull)
   */
  private Boolean blindPlateIsnotnull;

  /**
   * 明盘盲盘(精确搜索)
   */
  private List<String> blindPlateInList;

  /**
   * 零库存参与盘点
   */
  private Boolean zeroParticipation;

  /**
   * 零库存参与盘点
   */
  private String zeroParticipationEq;

  /**
   * 是否有 附件
   */
  private Boolean file;

  /**
   * 表单名称
   */
  private String formName;

  /**
   * 工作流状态
   */
  private Integer wfStatus;
}
